ES5里面没有块级作用域,带来了很多难以理解的问题，比如for循环var变量泄露，变量覆盖等问题。
let 声明的变量拥有自己的块级作用域，且修复了var声明变量带来的变量提升问题